iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
1

昨天提到了 DeploymentPod 之間的差異,今天再來仔細的說一下什麼是 Deployment 元件,Deployment 可以算是 Kubernetes 中最常用到的元件之一,DeploymentPod 相同但卻更強大,通常在建立新的 Deployment 時,會同時建立 ReplicaSet , 接著 ReplicaSet 會在建立 Pod,在建立的過程中 Deployment 會一併檢查是否能正常啟動,例如:「image 是否存在」、「yaml 檔案規則是否正確」

另外,每次透過 Deployment 在更新服務版本時,也會觸發檢查機制,若檢查不通過 Deployment 不會讓新服務上線,繼續維持舊版服務,確保服務正常。

Deployment 可以達成以下幾件事情:

  • 擴展(Scaling) Pod 服務,滿足更高負載
  • 佈署服務
  • 服務升版
  • 服務降版(Rollback)
  • 檢查服務是否健康 (Health Check)

建置 Deployment

執行 kubectl apply -f deployment.yml

## deployment.yml
apiVersion: extensions/v1beta1 ## 選擇 api server 要存取的 api 版本
kind: Deployment               ## 指定為 Deployment 物件
metadata:                      ## 用來描述 Deployment 物件的資料
  name: nginx                  ## Deployment 的名稱
  labels:                      ## 賦予 Deployment 元件的標籤(service: http-server)
    service: http-server
spec:
  replicas: 3                  ## 運行 3 個 Pod
  selector:                    ## 指定 Deployment 管理的 Pod 規則
    matchLabels:               ## Pod 必須具備 service: http-server 的標籤
      service: http-server
  template:
    metadata:                  ## 賦予 Pod具備 service: http-server 的標籤
      labels:
        service: http-server
    spec:
      containers:              ## 描述容器的資料
      - name: nginx-deploy     ## 容器名稱
        image: nginx           ## 容器映像檔
        ports:                 ## 指定容器 Port 號
        - containerPort: 80

更多 Deployment 撰寫規則

建立 ServiceDeployment 溝通

## service.yml
apiVersion: v1            ## k8s api 版本號
kind: Service             ## 指定為 Service 物件
metadata:                 ## 用來描述 Service 物件的資料
  name: nginx-service     ## Service 的名稱
spec:
  type: NodePort          ## 指定Service的型別
  selector:
    service: http-server  ## 對應那一個 Deployment 的標籤
  ports:
  - port: 80              ## 容器外 Port
    targetPort: 80        ## 容器內 Port

上一篇
Day22 了解 K8S 的 Service
下一篇
Day24 了解 K8S 的 Ingress
系列文
就是「懶」才更需要重視DevOps30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言